package com.heatup.apt.common.dao;

import com.heatup.apt.model.management.SysMenu;
import com.heatup.apt.model.management.SysUser;
import com.heatup.apt.model.management.SysUserMenu;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;

import java.util.List;
import java.util.Map;
@Component
public interface SysUserMapper {
	
	/**
	 * 查询用户信息
	 * SysUserMapper.querySysUserByMap()<BR>
	 * <P>Author :  fangxiaowen </P>  
	 * <P>Date : 2016年10月14日 </P>
	 * @param map
	 * @return
	 */
	SysUser querySysUserByMap(Map<String, String> map);
	
	/**
	 * 查询菜单信息 根据UserId
	 * SysUserMapper.queryUserMenuByUserId()<BR>
	 * <P>Author :  fangxiaowen </P>  
	 * <P>Date : 2016年10月14日 </P>
	 * @param userId
	 * @return
	 */
	List<SysMenu> queryUserMenuByUserId(Integer userId);

	/**
	 * 用户菜单父菜单查询
	 * @param userId
	 * @return
	 */
	List<SysMenu>queryUserParentMenuByUserId(Integer userId);

	/**
	 * 用户子菜单查询
	 * @param userId
	 * @return
	 */
	List<SysMenu>queryUserSubMenuByUserId(Integer userId);
	
	/**
	 * 查询用户列表
	 * SysUserMapper.queryUserList()<BR>
	 * <P>Author :  fangxiaowen </P>  
	 * <P>Date : 2016年10月14日 </P>
	 * @param map
	 * @return
	 */
	List<SysUser> queryUserList(Map<Object, Object> map);
	
	/**
	 * 查询用户条数
	 * SysUserMapper.queryUserCount()<BR>
	 * <P>Author :  fangxiaowen </P>  
	 * <P>Date : 2016年10月14日 </P>
	 * @param map
	 * @return
	 */
	int queryUserCount(Map<Object, Object> map);
	
	/**
	 * 查询菜单列表
	 * SysUserMapper.queryMenuList()<BR>
	 * <P>Author :  fangxiaowen </P>  
	 * <P>Date : 2016年10月14日 </P>
	 * @return
	 */
	List<SysMenu> queryMenuList();
	
	/**
	 * 插入用户 与 菜单关系
	 * SysUserMapper.insertUserMenu()<BR>
	 * <P>Author :  fangxiaowen </P>  
	 * <P>Date : 2016年10月14日 </P>
	 * @param sysUserMenu
	 * @return
	 */
	int insertUserMenu(SysUserMenu sysUserMenu);
	
	/**
	 * 插入用户信息
	 * SysUserMapper.insertUser()<BR>
	 * <P>Author :  fangxiaowen </P>  
	 * <P>Date : 2016年10月14日 </P>
	 * @param sysUser
	 * @return
	 */
	int insertUser(SysUser sysUser);
	
	/**
	 * 修改用户信息
	 * SysUserMapper.updateUser()<BR>
	 * <P>Author :  fangxiaowen </P>  
	 * <P>Date : 2016年10月14日 </P>
	 * @param params
	 * @return
	 */
	int updateUser(Map<Object, Object> params);
	
	/**
	 * 删除用户
	 * SysUserMapper.deleteUserById()<BR>
	 * <P>Author :  fangxiaowen </P>  
	 * <P>Date : 2016年10月14日 </P>
	 * @param id
	 * @return
	 */
	int deleteUserById(Integer id);
	
	/**
	 * 删除用户与菜单关系
	 * SysUserMapper.deleteUserMenuByUserId()<BR>
	 * <P>Author :  fangxiaowen </P>  
	 * <P>Date : 2016年10月14日 </P>
	 * @param userId
	 * @return
	 */
	int deleteUserMenuByUserId(Integer userId);
	
	/**
	 * 根据用户ID 获取用户
	 * SysUserMapper.queryUserById()<BR>
	 * <P>Author :  fangxiaowen </P>  
	 * <P>Date : 2016年10月14日 </P>
	 * @param id
	 * @return
	 */
	SysUser queryUserById(Integer id);
	
	/**
	 * 修改密码
	 * SysUserMapper.updatePassword()<BR>
	 * <P>Author :  fangxiaowen </P>  
	 * <P>Date : 2016年10月14日 </P>
	 * @param params
	 * @return
	 */
	int updatePassword(Map<Object, Object> params);
	
	/**
	 * 根据手机查询用户条数
	 * SysUserMapper.queryUserCountByMobile()<BR>
	 * <P>Author :  fangxiaowen </P>  
	 * <P>Date : 2016年10月20日 </P>
	 * @param mobile
	 * @return
	 */
	int queryUserCountByMobile(String mobile);

	/**
	 * 查询系统用户
	 *
	 * @param mobile
	 * @return
	 */
    SysUser querySysUserByMobile(String mobile);

    /**
     * 更新系统用户
     *
     * @param sysUser
     * @return
     */
    int updateByPrimaryKeySelective(SysUser sysUser);

    /**
     * 根据旧手机号修改系统用户手机号
     *
     * @return 更新数量 >0 成功
     * @author blank 2017/8/18 下午4:41
     */
    int updateSystemUserMobileByOldMobile(@Param("mobile") String mobile, @Param("oldMobile") String oldMobile);
}